package com.zw.pm.module.config.tasktemp;

import com.zw.pm.base.BaseController;
import com.zw.pm.common.JsonResult;
import com.zw.pm.common.ValidResult;
import com.zw.pm.gen.entity.TaskTemp;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @Description: 任务 控制层
 *
 * @Author: China.sgl
 * @Date: 2019/11/28 13:48
 */
@Controller
@RequestMapping("/config/taskTemp")
public class TaskTempController extends BaseController {

    @Autowired
    private TaskTempService taskTempService;

    /**
     * 系统任务页面
     *
     * @return 页面 URL
     */
    @GetMapping
    @RequiresPermissions({"config:taskTemp"})
    public String page(Model model) {
        model.addAttribute("factories", taskTempService.findAllFactory());
        return "config/taskTemp/page";
    }

    /**
     * 列表
     *
     * @return Json 数据
     */
    @ResponseBody
    @PostMapping("/list")
    @RequiresPermissions({"config:taskTemp"})
    public JsonResult list(TaskTemp taskTemp) {
        startPage();
        List<TaskTempModel> list = taskTempService.findTaskTempAll(taskTemp);
        return jsonResult(list);
    }

    /**
     * 任务名唯一验证
     * @param taskTemp 任务
     * @return json 数据
     */
    @ResponseBody
    @PostMapping("/checkUnique")
    @RequiresPermissions({"config:taskTemp"})
    public ValidResult checkUnique(TaskTemp taskTemp) {
        TaskTemp p = taskTempService.findByTaskTempName(taskTemp.getName());
        if (taskTemp.getId() == null) {
            return ValidResult.result(p);
        }
        if (p == null || taskTemp.getId().equals(p.getId())) {
            return ValidResult.SUCCESS;
        }
        return ValidResult.FAIL;
    }

    /**
     * 创建任务
     * @param taskTemp 任务信息
     * @return json 数据
     */
    @ResponseBody
    @PostMapping("/save")
    @RequiresPermissions({"config:taskTemp"})
    public JsonResult save(TaskTemp taskTemp) {
        return jsonResult(taskTempService.saveTaskTemp(taskTemp));
    }

    /**
     * 根据ID查询
     * @param id id
     * @return TaskTemp
     */
    @ResponseBody
    @PostMapping("/id")
    @RequiresPermissions({"config:taskTemp"})
    public TaskTemp id(Integer id) {
        return taskTempService.getTaskTemp(id);
    }

    /**
     * 修改任务
     * @param taskTemp 任务信息
     * @return json 数据
     */
    @ResponseBody
    @PostMapping("/update")
    @RequiresPermissions({"config:taskTemp"})
    public JsonResult update(TaskTemp taskTemp) {
        return jsonResult(taskTempService.updateTaskTemp(taskTemp));
    }

    /**
     * 删除任务
     * @param taskTemp 任务
     * @return json 数据
     */
    @ResponseBody
    @PostMapping("/del")
    @RequiresPermissions({"config:taskTemp"})
    public JsonResult del(TaskTemp taskTemp) {
        return jsonResult(taskTempService.delTaskTemp(taskTemp));
    }

}
